#---------------------------------------------------
# Makefile for efabless project open_pdks
# Tim Edwards, 11/21/2016
# Updated 10/19/2018 for use independently of the
# efabless /ef/ tree filesystem setup.
# Updated 5/5/2020 for use with the 2-stage install
#---------------------------------------------------
#
# Typical usage:
#
# make
# 	generates the tech files from source masters.
#
# make install
#
# 	installs the tech files.  If the configuration
#	script has been given the "--with-<PDK>-dist-path="
#	option, then tech files are installed in the path
#	(such as a git repository) that is used for
#	distribution of software across a system.  Otherwise,
#	files are installed in the local path specified by
#	the configuration option "--with-<PDK>-local-path=".
#
# make clean
#
# 	clean up all files generated by 'make'
# 
# make veryclean
#
# 	clean up all files generated by 'make' and remove
#	all log files.
#
# make uninstall
#
#	remove the installed PDKs.
#
#---------------------------------------------------
#
# The following definitions are tied to the contents
# of this repository and should not be changed.

TECHS =

SKY130_SOURCE_PATH = @SKY130_SOURCE_PATH@
ifneq ($(SKY130_SOURCE_PATH),)
    TECHS += sky130
endif

DONE_MESSAGE = "Done."
ifeq ($(TECHS),)
	DONE_MESSAGE = "No techs configured."
endif

TECHS_ALL = $(addprefix tech_,$(TECHS))
TECHS_INSTALL = $(addprefix install-,$(TECHS))
TECHS_UNINSTALL = $(addprefix uninstall-,$(TECHS))
TECHS_CLEAN = $(addprefix clean-,$(TECHS))
TECHS_VERYCLEAN = $(addprefix veryclean-,$(TECHS))

#---------------------------------------------------

all: $(TECHS_ALL)
	@echo $(DONE_MESSAGE)

install: $(TECHS_INSTALL) common_install
	@echo $(DONE_MESSAGE)

uninstall: $(TECHS_UNINSTALL)
	@echo $(DONE_MESSAGE)

clean: $(TECHS_CLEAN)
	@echo $(DONE_MESSAGE)

veryclean: $(TECHS_VERYCLEAN)
	@echo $(DONE_MESSAGE)

distclean: $(TECHS_VERYCLEAN)
	${RM} -rf sources
	@echo $(DONE_MESSAGE)

#---------------------------------------------------

CPP = common/preproc.py

common_install:
	@if test -w @prefix@ ; then \
		mkdir -p @prefix@/pdk/bin/ ;\
		cp common/cleanup_unref.py @prefix@/pdk/bin/ ;\
		cp common/soc_floorplanner.py @prefix@/pdk/bin/ ;\
		cp common/change_gds_cell.py @prefix@/pdk/bin/ ;\
		cp common/find_gds_prefix.py @prefix@/pdk/bin/ ;\
		cp common/change_gds_string.py @prefix@/pdk/bin/ ;\
		${CPP} -DPREFIX=@prefix@ common/create_project.py \
			@prefix@/pdk/bin/create_project.py ;\
		echo "Common install:  Done." ;\
	else \
		echo "Common install:  @prefix@ is not writeable (ignoring)." ;\
	fi
	
#---------------------------------------------------

tech_sky130:
	(cd sky130 && ${MAKE} all)

#---------------------------------------------------

install-sky130:	sky130
	(cd sky130 && ${MAKE} install)

uninstall-sky130: sky130
	(cd sky130 && ${MAKE} uninstall)

clean-sky130:
	(cd sky130 && ${MAKE} clean)

veryclean-sky130:
	(cd sky130 && ${MAKE} veryclean)

#---------------------------------------------------
